IF EXISTS(SELECT * FROM sysobjects WHERE name = 'buscarLitologia' AND type = 'P')
BEGIN
	DROP PROCEDURE buscarLitologia
END
GO
CREATE PROCEDURE buscarLitologia
(
@CodigoSondaje INT
)
AS
/*********************************************************************
	Resumen: Devuelve lista de Litologia
	Parametros:
		@CodigoSondaje : Codigo de Sondaje
**********************************************************************/	
SET NOCOUNT on
BEGIN
	
	DECLARE @Litologia TABLE
	(
	CodigoLitologia VARCHAR(3),
	Desde FLOAT,
	Hasta FLOAT,
	Angulo FLOAT,
	DescripcionTipoContacto VARCHAR(100),
	Descripcion VARCHAR(500),
	Incostencia INT DEFAULT(0)
	);
	
	INSERT INTO @Litologia(CodigoLitologia, Desde, Hasta, Angulo, DescripcionTipoContacto, Descripcion)	
	SELECT t1.CodigoLitologia, t1.Desde, t1.Hasta, t1.Angulo, t2.Descripcion AS DescripcionTipoContacto, t1.Descripcion
	FROM Litologia t1
	LEFT JOIN TipoContacto t2 ON t2.CodigoTipoContacto = t1.CodigoTipoContacto 
	WHERE t1.CodigoSondaje = @CodigoSondaje
	
	-- Para Validacion
	DECLARE @CodigoAnterior	VARCHAR(3)
	DECLARE @CodigoLitologia VARCHAR(3)
	DECLARE @Espacio FLOAT
	DECLARE @EspacioAnterior FLOAT
	
	DECLARE @Desde FLOAT
	DECLARE @Hasta FLOAT
	
	SELECT TOP 1 @CodigoAnterior = CodigoLitologia, @EspacioAnterior = isnull(Desde, 0) 
	FROM Litologia WHERE CodigoSondaje = @CodigoSondaje ORDER BY Desde ASC, Hasta ASC
	
	-- Valida Interseccion de segmetos
	DECLARE curLitologia CURSOR FOR
	SELECT Desde, Hasta, CodigoLitologia, isnull(Desde, 0) AS Espacio FROM Litologia WHERE CodigoSondaje = @CodigoSondaje
	UNION 
	SELECT Desde, Hasta, CodigoLitologia, isnull(Hasta, 0) AS Espacio FROM Litologia WHERE CodigoSondaje = @CodigoSondaje
	ORDER BY 1, 2

	
	OPEN curLitologia
	FETCH NEXT FROM curLitologia INTO @Desde, @Hasta, @CodigoLitologia, @Espacio								
	WHILE (@@FETCH_STATUS=0)
	BEGIN
		   	
		IF (@CodigoAnterior <> @CodigoLitologia)
			BEGIN
				IF (@Espacio - @EspacioAnterior) <> 0
					BEGIN
						-- Se marca como inconstencia a ambos registros
			   			UPDATE @Litologia SET Incostencia = 1 WHERE CodigoLitologia = @CodigoAnterior
			   			UPDATE @Litologia SET Incostencia = 1 WHERE CodigoLitologia = @CodigoLitologia
					END							
			END 
		
		SET @CodigoAnterior = @CodigoLitologia 
		SET @EspacioAnterior = @Espacio
		FETCH NEXT FROM curLitologia INTO @Desde, @Hasta, @CodigoLitologia, @Espacio
	END
	CLOSE curLitologia
	DEALLOCATE curLitologia
	
	--SELECT * FROM Litologia ORDER BY CodigoLitologia ASC
	SELECT * FROM @Litologia ORDER BY Desde ASC, Hasta ASC
	
END -- buscarLitologia 4			
